Request-based encoding for streaming content portions

ABSTRACT

Systems and methods are described to enable request-driven encoding of content portions to be played back as part of a content stream. A content stream can represent multiple types of content, each initially encoded according to different formatting parameters. Thus, playback of the multiple types of content as initially encoded would result in an inconsistently formatted content stream. To address this, a streaming content delivery service may respond to requests by determining whether consistently formatted content portions are available, and if such portions are not available, select fallback content portions for inclusion in the stream. The streaming content service can further initiate generation of the consistently formatted content portions in response to the request, such that subsequent requests may be serviced using the consistently formatted content portions.

BACKGROUND

Generally described, computing devices utilize a communication network,or a series of communication networks, to exchange data. Companies andorganizations operate computer networks that interconnect a number ofcomputing devices to support operations or provide services to thirdparties. The computing systems can be located in a single geographiclocation or located in multiple, distinct geographic locations (e.g.,interconnected via private or public communication networks).Specifically, data centers or data processing centers, herein generallyreferred to as “data centers,” may include a number of interconnectedcomputing systems to provide computing resources to users of the datacenter. The data centers may be private data centers operated on behalfof an organization or public data centers operated on behalf, or for thebenefit of, the general public.

Service providers or content creators (such as businesses, artists,media distribution services, etc.) can employ a series of interconnecteddata centers to deliver content (such as web sites, web content, orother digital data) to users or clients. These interconnected datacenters are sometimes referred to as “content delivery networks” (CDNs)or streaming content delivery systems. Existing routing and addressingtechnologies can enable multiple data centers associated with astreaming content delivery system to provide similar or identicalcontent to client computing devices. In some instances, each data centerproviding a set of content may be referred to as a point-of-presence(“POP”). A streaming content delivery system can maintain POPs over awide area (or worldwide) to enable the system to efficiently servicerequests from clients in a variety of locations.

CDNs can be utilized to distribute wide varieties of content, and insome instances may serve to replicate or replace prior contentdistribution systems. For example, CDNs can provide network-basedstreaming video or audio content in a manner similar to traditionaltelevision or radio networks. This content is sometimes referred to as“internet television” or “internet radio,” respectively. The streamingcontent can typically be viewed by dedicated computing devices (e.g.,set top boxes), dedicated viewers on client computing devices (e.g.,software applications), or non-dedicated software applications (e.g.,web browsers). Often, these viewers provide functionality greater thanthe functionality available on traditional distribution networks, liketelevision or radio, such as the availability to play content“on-demand.” This flexibility can lead to a wide diversity of contentbeing included within a content stream. For example, different users canbe provided within different legal warnings according to theirjurisdictional location, or with different advertisements according totheir predicted preferences. However, the diversity of content can alsoresult in inconsistent formatting within a content stream. For example,a main content may be formatted according to a first set of parameters,while additional content such as advertisements are formatted accordingto a second, different set of parameters. This inconsistent formattingcan cause both technical issues, as playback devices attempt to playcontent of differing format, and an undesirable user experience.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram depicting an illustrative logical networkenvironment including client computing devices, content providers, andadvertisement systems, as well as a streaming content delivery systemconfigured to provide a content stream to the client computing devices,the content stream including content portions encoded, in a request forthe content stream, to the to match other content portions included inthe content stream;

FIG. 2 is a block diagram depicting an illustrative configuration of oneembodiment of a server that may implement a content management enginewithin the streaming content delivery system of FIG. 1;

FIGS. 3A and 3B are block diagrams depicting illustrative interactionsof the streaming content delivery system of FIG. 1 for responding to aclient request for a content stream by generating a manifest fileidentifying content portions forming the content stream, and forencoding at least one of the content portions, in response to the clientrequest, to match other content portions included in the content stream;

FIGS. 4A and 4B are block diagrams depicting illustrative interactionsof the streaming content delivery system of FIG. 1 for responding to aclient request for a content portion identified within a manifest fileby providing either a content portion encoded to match other contentportions identified within the manifest file or a fallback contentportion; and

FIG. 5 is a flow chart depicting an illustrative routine for providingmatching content portions within a content stream based on clientrequests for the content stream.

DETAILED DESCRIPTION

Generally described, the present disclosure relates to providing acontent stream over a communication network, where at least a portion ofthe content stream is encoded in response to the request for the contentstream itself. More specifically, the present disclosure enables thedynamic encoding of content portions, within a content stream, to matchparameters or aspects of other portions within the content stream, toreduce technical issues associated with playback of inconsistent contentstreams and prevent disruption to an end user's experience due toinconsistent formatting within the content stream. Illustratively,aspects of the present disclosure can enable on-the-fly insertion ofvarious content types into a content stream, while maintainingconsistent formatting between content portions within the contentstream. This formatting may include, for example, the resolution,bitrate, and frame rate of a video content. As another example, theformatting may include bitrate, frame rate, or normalization values ofaudio content. As an example, the present disclosure can enableinclusion of additional content portions, such as disclaimers, legalwarnings, or advertisements, within a content stream in a manner thatmaintains consistent formatting within the content stream, withoutrequiring the additional content portions to be maintained in apre-encoded state prior to a request for the content stream. Thus,embodiments of the present disclosure can enable the additional contentportions to be included into a stream to be determined on-the-fly, suchas in response to a request for the content stream, while also enablingthose additional content portions to match the formatting of the contentstream, resulting in a better user experience and reducing technicalproblems that may arise due to inconsistent formatting. In addition,embodiments of the present disclosure can enable use of fallbackportions, such as default content portions, in instances where a“matching” content portion (e.g., a content portion with formattingmatching those of other portions in the content stream) is notavailable.

As described herein, a content stream generally refers to content thatis divided into portions (sometimes referred to as “segments” or“chunks”) that may be transmitted and viewed independently, such that aclient may begin to watch a first portion while downloading a second.The various portions of a content stream are often identified within oneor more manifests, which provide metadata regarding the streamingcontent as well as a list of portions within the content. Each portionmay be identified within the manifest based on a resource identifier(such as a uniform resource indicator, or “URI”) or file name, which aclient computing device may use to obtain and output the portions.Often, multiple types of content are identified within a singlemanifest. For example, a manifest may identify a legal warning to beoutput, a first portion of a main content, an advertisement, a secondportion of a main content, etc. Each of these portions can correspond toa separate file, which is encoded according to potentially independentparameters to result in portions with different formatting.Illustratively, a legal warning may be encoded at a first bitrate,resolution, and frame rate, and main content may be encoded at a secondbitrate, resolution, and framerate, advertisements may be encoded at athird bitrate, resolution, and framerate, etc. While client computingdevices can often output portions encoded according to disparateparameters, this can result in a disruptive user experience. In someinstances, it can also cause technical issues with playback, such ascausing delay as the configuration of an output device (e.g., monitor)is altered to facilitate different encoding parameters. Moreover, someclient computing devices may utilize information regarding encodingparameters of portions to selectively block or filter unwanted content,such as legal warning and notifications, credits, dedications, oradvertisements. Devices or software that block such content aresometimes referred to as “ad blockers.” Ad blockers often function bymonitoring manifests for information that designates specific resourcesas unwanted content. For example, ad blockers may attempt to identifyunwanted content by detecting the encoding parameters of differentportions, and identifying portions with given parameters (e.g., a lowerbitrate than the surrounding portions) as containing unwanted content.After identifying unwanted content, ad blocks may remove those portionsfrom the manifest file or otherwise prevent the client computing devicefrom displaying the portion. These modifications prevent clients fromviewing important content and can have a detrimental effect on contentproviders (e.g., by reducing the effectiveness of legal warnings,reducing advertising revenue of the content provider, etc.).

Embodiments of the present disclosure address these issues by enablingcreation of content streams including “matching” content portions, suchthat portions within the content stream share common formattingparameters, even when those portions correspond to different types ofcontent (e.g., main content and additional content). For ease ofdescription, examples will be described in which a content streamincludes portions corresponding to a television program as a maincontent as well as an advertisement as an additional content. However,main content may include any requested streaming content (e.g., audio,video, or textual content, as well as combinations thereof), whileadditional content may include any content added to the main content toform a content stream. In instances where a content stream includes botha television content and advertising content (e.g., both represented byrespective content portions within the stream), different encodingparameters for the television content and advertising content candisrupt either or both of an end user experience and operation of aclient computing device attempting to output the content stream. Onepossible solution for addressing this issue is to maintain differentpre-encoded versions of each possible advertising content, with aversion matching each possible format of each possible televisioncontent. However, the variety of possible advertising content,television content, and encoding parameters often renders suchapproaches impossible or impractical. For example, where advertisingcontent is determined on a per-user or per-request basis, the specificadvertising content included within a content stream may vary widelyfrom user to user or over time. Moreover, television content may beassociated with a variety of different versions, each encoded with avariety of parameters (e.g., different resolutions). Thus, pre-encodingall possible advertising content to match parameters of all possibletelevision content can be computationally prohibitive, both in terms ofprocessing power required to conduct such pre-encoding and in terms ofmemory required to maintain pre-encoded content. Accordingly,embodiments of the present disclosure provide a streaming contentdelivery service utilizing request-driven encoding to encode advertisingcontent (or other additional content) as appropriate within a givencontent stream. For example, where a client requests a content streamincluding a desired television content, the streaming content deliveryservice can determine an advertising content to be included in thecontent stream, and encode, at the time of the client request, theadvertising content with parameters matching those of the televisioncontent. Accordingly, the content stream may be output with constantparameters, reducing potential technical problems due to changes inthose parameters and improving the overall user experience, which may bedisrupted by changing parameters. Further, because such encoding needonly occur in response to client requests, the streaming contentdelivery service is enabled to encode advertising content with matchingparameters only on an “as needed” basis, reducing the computationalrequirements of the streaming content delivery service. In someinstances, the streaming content delivery service is configured to cachesuch encoded advertising content (or other additional content), suchthat the cached content can be included in subsequent content streamswithout re-encoding. Cached content may be continuously or periodicallydeleted to reduce the computing resources required to maintain thecache.

A streaming content delivery service may in some instances implementrequest-driven encoding by use of “optimistically” created manifests fora content stream. As described above, a manifest may generally includeidentifying information for various portions of content, and a clientcomputing device may process the manifest by retrieving and outputtingthe portions identified within a manifest. Generally, there can beexpected to be at least some delay between generation of a manifest andretrieval of portions identified within the manifest by a clientcomputing device, given that the manifest must be transmitted to theclient computing device before portions identified within the manifestcan be retrieved. In some instances, this delay can be significant, asclient computing devices may be configured to retrieve portionsidentified within a manifest only as required during playback (e.g.,portions representing a next n seconds of the content stream relative toa current playback position). Accordingly, the streaming contentdelivery service may generate manifests that identify matching contentportions for a stream, such as portions representing advertisingcontent, even before those matching content portions have been created.This is generally referred to herein as “optimistic” manifest creation.Simultaneously to or after generation of such manifests, the streamingcontent delivery service can begin to generate the matching contentportions, as will be described below. In the instance that generation ofa matching content portion completes before a request from a clientcomputing device is received for that matching content portion, thematching content portion can then be transmitted to the client computingdevice and included within a content stream. Thus, matching contentportions can be created on-the-fly, in response to client request for acontent stream.

In some instances, optimistic manifest creation can result in requestsfrom client computing devices for content portions that are not yetavailable. For example, assume that optimistic manifest creation resultsin a manifest that identifies “pre-roll content,” such as a legalwarning, that is encoded with parameters matching a main content for thecontent stream. Further assume that the pre-roll content is scheduled,via the manifest, to playback prior to the main content, and that thematching pre-roll content has not yet been created by the streamingcontent delivery system. In such instances, a client computing devicemay request the pre-roll content before the streaming content deliverysystem has completed creation of the pre-roll content. In traditionalsystems, such a request may result in an error (e.g., a hypertexttransport protocol, or “HTTP,” error code “404”), which is generallyundesirable. Accordingly, embodiments of the present disclosure canenable use of fallback content portions, in the instance that a contentportion requested by a client computing device is not yet available.Illustratively, in the example provided above, the streaming contentdelivery system may maintain a default version of the pre-roll contentidentified in the manifest file, such that client requests for thematching pre-roll content result in delivery of the default version ofthe pre-roll content in instances where the matching pre-roll content isnot available. While use of fallback content portions may result indifferent formatting parameters among the content streams within acontent stream, this result may be more desirable than allowing errorsto occur at a client computing device. As described in more detailbelow, where the streaming content delivery system utilizes fallbackcontent portions, these content portions may be formatted to enableproper handling of the fallback content portions by various componentsof the streaming content delivery system. For example, the fallbackcontent portions may be generated with a low or zero “time-to-live”value, such that components of the streaming content delivery systemthat might otherwise cache the fallback content portions (e.g., pointsof present, or “POPs”) are instructed not to do so. As a furtherexample, rather than returning a fallback content portion directly inresponse to a request for a matching content portion, the streamingcontent delivery system may return a redirection (e.g., via an HTTP 3xxredirect code) to the fallback content portion. These techniques mayensure that subsequent requests for the matching content portion areproperly handled, and are not automatically fulfilled by providing thefallback content portion.

While some examples are provided with respect to specific types ofstreaming content, such as audio and video, embodiments of the presentdisclosure may be utilized to control delivery of any content dividedinto discrete sections that are identified to a user by a manifest.Moreover, while examples are provided herein with respect to contentdistribution systems, embodiments of the present disclosure may beimplemented with respect to any network of computing devices thatoperates to serve streaming content to client computing devices. Thus,the examples provided herein are intended to be illustrative, and notexhaustive, in nature.

As will be appreciated by one of skill in the art in light of thedescription above, the embodiments disclosed herein substantiallyincrease the ability of computing systems, such as streaming contentdelivery systems, to deliver streaming content to users that isconsistently encoded according to a matching set of parameter. Moreover,embodiments disclosed herein substantially increase the ability ofcomputing systems, such as streaming content delivery systems, todelivery streaming content in a protected manner, such that clientdevices are inhibited or prevented from modifying the output of one ormore portions with the content stream. Thus, the presently disclosedembodiments represent an improvement in the functioning of suchcomputing systems, by enabling streaming content delivery systems orother networked devices to replicate and reproduce functionalityprovided by traditional distribution networks, such as television andradio networks. Moreover, the presently disclosed embodiments addresstechnical problems inherent within computing systems; specifically, thelimited computing resources available to encode content with appropriateparameters, the limited control that network transmission systems haveof data after transmission to a client computing device, and the highpotential for client devices to modify that content in an undesirableway. These technical problems are addressed by the various technicalsolutions described herein, including the use of request-driven encodingfor content portions, optimistic manifest generation, and the use offallback portions to service requests for a content portion that is notyet available. Thus, the present disclosure represents a substantialimprovement on existing network systems and computing systems ingeneral.

In some instances, embodiments of the present disclosure may utilizeadditional techniques to inhibit removal or tampering with a contentstream. For example, a streaming content delivery system as described inthe present disclosure may utilize concealed identifiers within amanifest of streaming content, which inhibit a client computing devicefrom distinguishing between different types of content based on thoseidentifiers. Systems and methods for generating and utilizing concealedidentifiers in streaming content are described in more detail withinU.S. patent application Ser. No. 15/162,423, filed on May 23, 2016 andentitled “PROTECTING CONTENT-STREAM PORTIONS FROM MODIFICATION ORREMOVAL” (the “'423 application”), the entirety of which is herebyincorporated by reference.

The foregoing aspects and many of the attendant advantages of thepresent disclosure will become more readily appreciated as the samebecome better understood by reference to the following, when taken inconjunction with the accompanying drawings.

FIG. 1 is a block diagram depicting an illustrative logical networkenvironment 100 including multiple client computing devices 102, contentproviders 104, and advertisement systems 130 in communication with astreaming content delivery system 110 via a network 106. While theclient computing devices 102, the content providers 104, and theadvertisement systems 130 are shown as grouped within FIG. 1, the clientcomputing devices 102, content providers 104, and advertisement systems130 may be geographically distant, and independently owned or operated.For example, the client computing devices 102 could represent amultitude of users in various global, continental, or regional locationsaccessing the streaming content delivery system 110. Further, thecontent providers 104 could represent a multitude of related or distinctparties that have associated with the streaming content delivery system110 to provide content, such as web sites, multimedia, or other digital,network-deliverable content to the client computing devices 102. Stillfurther, the advertisement systems 130 could represent a multitude ofrelated or distinct parties provided advertising content to be includedwithin content associated with the content providers (e.g., andproviding revenue to the content providers). While shown as distinct,the client computing devices, content providers 104, or advertisementsystems 130 may be operated by a common entity, or by a common computingdevice. Accordingly, the grouping of client computing devices 102,content providers 104, and advertisement system 130 within FIG. 1 isintended to represent a logical, rather than physical, grouping.Similarly, each of the components of the streaming content deliverysystem 110 may be located within geographically diverse areas. Forexample, the streaming content delivery system 110 can contain POPs 112at a variety of globally, continentally, or regionally distinctlocations, in order to provide a wide geographical presence for thestreaming content delivery system 110.

Network 106 may be any wired network, wireless network, or combinationthereof. In addition, the network 106 may be a personal area network,local area network, wide area network, cable network, satellite network,cellular telephone network, or combination thereof. In the exampleenvironment of FIG. 1, network 106 is a global area network (GAN), suchas the Internet. Protocols and components for communicating via theother aforementioned types of communication networks are well known tothose skilled in the art of computer communications and thus, need notbe described in more detail herein. While each of the client computingdevices 102, content providers 104, advertisement systems 130, andstreaming content delivery system 110 is depicted as having a singleconnection to the network 106, individual components of the clientcomputing devices 102, content providers 104, advertisement systems 130,and streaming content delivery system 110 may be connected to thenetwork 106 at disparate points. Accordingly, communication times andcapabilities may vary between the components of FIG. 1.

Client computing devices 102 may include any number of differentcomputing devices capable of communicating with the streaming contentdelivery system 110. For example, individual client computing devices102 may correspond to a laptop or tablet computer, personal computer,wearable computer, server, personal digital assistant (PDA), hybridPDA/mobile phone, mobile phone, electronic book reader, set-top box,camera, digital media player, and the like. Each client computing device102 may include hardware and/or software enabling the reception andoutput of streaming content, including dedicated playback hardware,dedicated software (e.g., specially programmed applications), andgeneral purpose software (e.g., web browsers) capable of outputtingstreaming content (e.g., by downloading the content directly,downloading a web page including the content, etc.). In some instances,client computing devices 102 may further be configured to reportinformation regarding output of content to the streaming contentdelivery system 110, such as whether specific portions of content wereoutput by the client computing device. The specific configuration ofindividual client computing devices 102 may vary. For example, mostclient computing devices 102 may retrieve and output streaming contentwithout modification; however, some client computing devices 102 mayinclude hardware or software configured to modify streaming content toremove specific portions (e.g., legal warnings, credits, dedications,advertisements, etc.).

Content providers 104 may include any computing device owned or operatedby an entity that provides content to the streaming content deliverysystem 110 for subsequent transmission to client computing devices(which may include one or more client computing devices 102). Forexample, content providers 104 may include servers hosting streamingaudio, video, text, multimedia, or interactive services (e.g., videogames, virtual or augmented reality content, or other immersivecontent). While illustratively shown in FIG. 1 as a network-attachedcomputing device, content providers 104 may additionally oralternatively provide content to the streaming content delivery system110 via non-networked communication channels (e.g., via physicaldelivery of data).

Advertisement systems 130 can include any computing device owned oroperated by an entity that provides advertising content to the streamingcontent delivery system 110 for inclusion within other content (e.g.,streaming video). Advertising may include pictures, text, audio, video,or any other content to be inserted within other content types providedby the streaming content delivery system 110. Illustratively, theadvertising may be stored by the advertisement systems 130 within the adcontent data store 134, which may correspond to any persistent orsubstantially persistent data storage, such as a hard drive (HDD), asolid state drive (SDD), network attached storage (NAS), a tape drive,or any combination thereof. In some instances, the advertisement systems130 may be configured to select the specific advertisements to beincluded within streaming content provided by the streaming contentdelivery system 110 (e.g., based on attributes of a client computingdevice 102). Accordingly, the advertisement systems 130 may include anad selection service 132 configured to receive information regardingcontent to be streamed to a client computing device 102 (e.g., includingattributes of the client computing device 102 itself) and to return aselection of advertising to be included within the streaming content. Inone embodiment, the streaming content delivery system 110 and the adselection service 132 may communicate by use of a standard protocol orspecification, such as the Video Ad Serving Template (VAST)specification provided by the INTERACTIVE ADVERTISING BUREAU™ (“IAB”),which enables a streaming content service to transmit informationregarding streaming content and to receive, from the advertisementsystem 130, information regarding what advertising should be played, howthe advertising should be played, and notification information for theadvertising (e.g., URIs to which requests should be sent as variousportions of the advertising is output). The operation of advertisementsystems 130, including ad selection services 132, is generally knownwithin the art and thus will not be described in detail herein. Whileillustrative embodiments are described with regard to distinctadvertisement systems 130 that select advertisements for inclusion incontent streams, the streaming content delivery system 110 mayadditionally or alternatively operate without interaction withadvertisement systems 130 (e.g., by integrating an ad selection service132 into the streaming content delivery system 110, by selectingadvertising based on a set of rules, by providing static advertising, byintegrating non-advertising content as protected content, etc.).

The streaming content delivery system 110 can include a variety ofcomponents and devices configured to enable client computing devices 102to access streaming content provided to the streaming content deliverysystem 110 by the content providers 104 and the advertisement systems130. Specifically, the streaming content delivery system 110 can includea number of POPs 112 configured to host streaming content, or act as acaching point for streaming content hosted by the streaming contentdelivery system 110, the content providers 104, and/or the advertisementsystems 130. Each POP 112 may include a variety of computing devicesconfigured to serve content to client computing devices 102.Accordingly, though not shown in FIG. 1, each POP 112 may include anynumber of processors, data stores, or networking components operating inconjunction to facilitate retrieval and delivery of streaming content toclient computing devices. The POPs 112 may communicate with othercomponents of the streaming content delivery system 110 via an internalnetwork of that system 110, which may include any wired network,wireless network, or combination thereof, and may be a personal areanetwork, local area network, wide area network, cable network, satellitenetwork, cellular telephone network, or combination thereof. In someinstances, the internal network may be implemented at least in part bythe network 106 (e.g., as a virtual private network, or “VPN”).Illustratively, each POP 112 may function to hold a limited selection ofcontent portions within a local cache data store (e.g., the mostrecently requested n content portions), such that these content portionscan be quickly transmitted to client computing devices 102. When thelocal cache data store does not include a requested content portion, thePOP 112 can be configured to retrieve the content portion from a remotedata store, such as a content data store 124 of a content service 120within the streaming content delivery system 110, the ad content datastore 134, or a data store within a system of a content provider 104(not show in FIG. 1), and return the content portion to a requestingclient computing device 102.

The streaming content delivery system 110 can further include a manifestgeneration service 114 configured to respond to client requests forstreaming content, and to generate a manifest that identifies a numberof content portions to be provided to a requesting client computingdevice 102. As will be described in more detail below, the manifestgeneration service 114 may interact with other components of thestreaming content delivery system 110 as well as external components,such as the advertisement systems 130, to select the specific contentportions to be identified within the manifest. These content portionsmay be selected, for example, such that each content portion is encodedaccording to matching or otherwise interchangeable parameters (e.g., acommon bitrate, frame rate, or resolution). In some instances, themanifest generation service 114 can further communicate information toother components of the streaming content delivery system 110, such asthe monitoring and reporting service 118 and the POPs 112, that enablesuch components to interact with or process content received from clientcomputing devices. For example, where the manifest generation service114 generates a manifest including concealed identifiers, as describedwithin the '423 application (incorporated by reference above), themanifest generation service 114 may transmit concealed identifierinformation to the monitoring and reporting service 118 and the POPs112, to enable those components to determine underlying (non-concealed)identifiers for each viewed portion. In accordance with embodiments ofthe present disclosure, the manifest generation service 114 may in someinstances generate manifests optimistically, such that at least onecontent portion identified in the manifest is not yet available at thestreaming content delivery system 110. Accordingly, the manifestgeneration service 114 can notify a content service 120 of suchoptimistic manifest generation, such that the content service 120 canbegin to generate any content portions that are not yet available.

The content service 120 may be configured to generate content portionsfor use in a content stream, such as content portions identified withina manifest file, but not yet available on the streaming content deliverysystem 110. Illustratively, the content service 120 can include acontent management engine 122 that receives manifest information fromthe manifest generation service 114, identifies any content portionsreferenced within the manifest that are not yet available within acontent data store 124, and generations such content portions. In oneembodiment, the content management engine 122 itself may encode suchcontent portions, by retrieving a source content (e.g., an uncompressedor high quality version of a content item to be included in a contentstream) and generating content portions from the source content,according to the desired encoding parameters for the source content. Inanother embodiment, the content management engine 122 may interact witha separate encoding system to direct the system to encode a sourcecontent according to desired encoding parameters. One example of aseparate encoding system is described within U.S. patent applicationSer. No. 15/194,347, entitled “SYNCHRONIZATION OF MULTIPLE ENCODERS FORSTREAMING CONTENT,” and filed Jun. 27, 2016 (the “'347 application”),the entirety of which is hereby incorporated by reference herein. Aftercontent portions have been encoded, they may be stored in the contentdata store 124 to make those portions available to the client computingdevice 102 that have received manifests, to the POPs 112, or to othercomponents of the streaming content delivery system 110. The contentdata store 124, which may be utilized to store the generated contentportions as well as other content (e.g., as provided by the contentproviders 104, the advertisement systems 130, etc.) can correspond toany persistent or substantially persistent data storage, such as a harddrive (HDD), a solid state drive (SDD), network attached storage (NAS),a tape drive, or any combination thereof.

The content service 120 may further be configured to handle requests forcontent portions, as may be received from the POPs 112 or the clientcomputing devices 102. Illustratively, the content management engine 122may receive a request for a content portion, and determine whether thecontent portion is included within the content data store 124. If so,the content management engine 122 may return the requested contentportion to a requesting device. Otherwise, the content management engine122 may return a fallback content portion to the requesting device. Aswill be described in more detail below, the fallback content portion maycorrespond to a different version of the requested content portion, suchas a version with content encoded according to parameters that do notmatch other content portions within a content stream, and may beprovided to prevent errors that would otherwise be associated with arequest for an unavailable content portion. In some instances, thecontent service 120 may return the fallback content portion in a mannerthat prevents future requests for the requested content portion frombeing automatically fulfilled by delivery of the fallback contentportion. Illustratively, the content service 120 may prevent the POPs112 from caching the fallback content portion as the requested contentportion, such that subsequent requests for the requested content portionare also delivered to the content service 120 (e.g., rather than beingserviced from a cache of the POP 112).

The streaming content delivery system can further include a monitoringand reporting service 118, which includes one or more servers configuredto process monitoring information regarding output of content on clientcomputing devices. Illustratively, the monitoring and reporting service118 may log information indicating what content has been output onclient computing devices 102. In some instances, the monitoring andreporting service 118 may further transmit notifications in response tooutput of content on a client computing device 102. Further detailsregarding transmission of notifications by a monitoring and reportingservice 118 are included within U.S. patent application Ser. No.15/282,929, entitled “OUTPUT TRACKING FOR PROTECTED CONTENT-STREAMPORTIONS,” and filed concurrently herewith on Sep. 30, 2016, theentirety of which is hereby incorporated by reference herein.

It will be appreciated by those skilled in the art that the streamingcontent delivery system 110 may have fewer or greater components thanare illustrated in FIG. 1. In addition, the streaming content deliverysystem 110 could include various web services and/or peer-to-peernetwork configurations. Thus, the depiction of the streaming contentdelivery system 110 in FIG. 1 should be taken as illustrative. Forexample, in some embodiments, components of the streaming contentdelivery system 110, such as the manifest generation service 114 or thecontent service 120, may be executed by one more virtual machinesimplemented in a hosted computing environment. A hosted computingenvironment may include one or more rapidly provisioned and releasedcomputing resources, which computing resources may include computing,networking and/or storage devices. A hosted computing environment mayalso be referred to as a cloud computing environment.

FIG. 2 depicts one embodiment of an architecture of a server 200 thatmay implement the content management engine 122 described herein. Thegeneral architecture of server 200 depicted in FIG. 2 includes anarrangement of computer hardware and software components that may beused to implement aspects of the present disclosure. As illustrated, theserver 200 includes a processing unit 204, a network interface 206, acomputer readable medium drive 207, an input/output device interface208, a display 202, and an input device 224, all of which maycommunicate with one another by way of a communication bus. The networkinterface 206 may provide connectivity to one or more networks orcomputing systems, such as the network 106 of FIG. 1. The processingunit 204 may thus receive information and instructions from othercomputing systems or services via a network. The processing unit 204 mayalso communicate to and from memory 210 and further provide outputinformation for an optional display 202 via the input/output deviceinterface 208. The input/output device interface 220 may also acceptinput from the optional input device 224, such as a keyboard, mouse,digital pen, etc. In some embodiments, the server 200 may include more(or fewer) components than those shown in FIG. 2. For example, someembodiments of the server 200 may omit the display 202 and input device224, while providing input/output capabilities through one or morealternative communication channel (e.g., via the network interface 206).

The memory 210 may include computer program instructions that theprocessing unit 204 executes in order to implement one or moreembodiments. The memory 210 generally includes random access memory(RAM), read only memory (ROM) and/or other persistent or non-transitorymemory. The memory 210 may store an operating system 214 that providescomputer program instructions for use by the processing unit 204 in thegeneral administration and operation of the server 200. The memory 210may further include computer program instructions and other informationfor implementing aspects of the present disclosure. For example, in oneembodiment, the memory 210 includes user interface software 212 thatgenerates user interfaces (and/or instructions therefor) for displayupon a computing device, e.g., via a navigation interface such as a webbrowser installed on the computing device. In addition, memory 210 mayinclude or communicate with one or more auxiliary data stores, such asdata store 220, which may correspond to any persistent or substantiallypersistent data storage, such as a hard drive (HDD), a solid state drive(SDD), network attached storage (NAS), a tape drive, or any combinationthereof.

In addition to the user interface module 212, the memory 210 may includecontent management software 216 that may be executed by the processingunit 204. In one embodiment, the content management software 216implements various aspects of the present disclosure, e.g., identifyingcontent portions not yet available at the streaming content deliverysystem, generating those content portions according to desiredparameters, and managing requests for content portions (e.g., byproviding content portions when available, or fallback content portionswhen requested content portions are not available). While contentmanagement software 216 is shown in FIG. 2 as part of the server 200, inother embodiments, all or a portion of the software may be implementedby alternative computing devices within the streaming content deliverysystem 110, such as the manifest generation service 114.

FIGS. 3A and 3B depict a set of illustrative interactions for generatinga manifest for delivery to a client computing device 102 to enable thedevice 102 to output a content stream from the streaming contentdelivery system 110, the content stream including a set of portionencoded according to a set of matching parameters. While shown as twofigures, the interactions of FIGS. 3A and 3B are numbered sequentiallyand may be undertaken in conjunction.

The interactions begin at (1) of FIG. 3A, where a client computingdevice 102 requests content from a manifest generation service '114 ofthe streaming content delivery system 110. The request may be generatedby a client's use of the client computing device 102, such as bylaunching or interacting with an application for viewing streamingcontent, a web browser application, etc. The request can indicate atleast a main content desired by the client, such as a televisionprogram, movie, video, audio program, etc. In some instances, therequest can further indicate information regarding the client computingdevice 102 or a client utilizing the client computing device 102, suchas configuration of the device 102, location of the device 102, anaccount of the device 102 or the client on the streaming contentdelivery system 110. As described below, this information may beutilized by the streaming content delivery system 110 and/or anadvertisement system 130 to determine additional content to be providedto the client computing device 102, such as legal warnings, credits,dedications, or advertisements, any of which the streaming contentdelivery system 110 may encode on-the-fly, in response to the requestfrom the client computing device 102, such that the additional contentis provided in portions with encoding matching other portions within thecontent stream (e.g., portions of the main content).

As noted above, in addition to the main content requested by the clientcomputing device 102, streaming content can also include one or moreother types of content, such as legal warnings, credits, dedications, oradvertisements. This content will generally be described herein as“additional content.” In some instances, the manifest generation service114 itself may determine what additional content is to be includedwithin a content stream. For example, the manifest generation service114 may include a specific legal warning within all content streams, ormay maintain a set of rules that determine what additional contentshould be provided within a stream (e.g., based on criteria such as themain content requested, attributes of the request, attributes of theclient computing device 102, etc.). In other instances, the manifestgeneration service 114 may interact with other components, such asadvertisement system 130, to determine what additional content toinclude within the content stream. Because the additional content can bedetermined at the time that a manifest file is generated, the additionalcontent can be targeted specifically to the client computing device 102or the client of that device 102. For example, specific advertisementscan be included within a content stream that are likely to be relevantto a client. For the purposes of description of FIG. 3A, it will beassumed that the manifest generation service 114 is configured tointeract with an advertisement system 130A to determine at least oneadvertisement to include within a content stream as additional content.

Accordingly, at (2), the manifest generation service 114 transmits arequest to the advertisement system 130A for selection of anadvertisement to be included within a content stream, and thusidentified within a manifest file delivered to the client computingdevice 102. In one embodiment, the request may be formatted according tothe VAST specification, and may include any information regarding therequest, such as information regarding the requested main content,attributes of the client computing device 102, attributes of the clientof that device 102, etc. In response, at (3), the advertisement system130A returns an indication of an advertisement to be included in thecontent stream as additional content. Specific interactions forselection of advertisements by the advertisement system 130A are outsidethe scope of the present disclosure, and thus will not be discussed indetail.

As discussed above, it may be generally desirable that each contentportion forming a part of a content stream being encoded according tomatching parameters (e.g., bitrate, frame rate, resolution, etc.). Thus,at (4), the manifest generation service 114 can interact with thecontent service 120 to determine whether content portions correspondingto the selected advertisement are available in a format encodedaccording to parameters matching other content portions forming part ofa content stream (e.g., content portions corresponding to a maincontent, as requested by a client computing device 102). In the instancethat content portions corresponding to the selected advertisement andencoded according to matching parameters are available at the contentservice 120, such as within the content data store 124, the manifestgeneration service 114 can include an identifier of the matching contentportions within a manifest for the content stream, and return themanifest to the client computing device 102 to enable the clientcomputing device 102 to output the content stream. However, for thepurposes of description of FIG. 3A, it will be assumed that matchingcontent portions for the selected advertisement (e.g., content portionsrepresenting the advertisement as encoded according to parametersmatching those of other content portions to be included within a contentstream) are not available at the content service 120. Thus, at (5), themanifest generation service 114 interacts with the content server 120 todetermine one or more fallback content portions for inclusion within thecontent stream. In one embodiment, the fallback content portions mayrepresent a non-matching version of the selected advertisement, such asa version of the selected advertisement encoded according to parametersdifferent than the encoding parameters of other content portions to beincluded within a content stream. For example, the fallback contentportions may represent a low definition version of the selectedadvertisement, where the remaining content portions within a contentstream are high definition. In another embodiment, the fallback contentportions may represent content other than the selected advertisement,such as an alternative advertisement. Illustratively, the fallbackcontent portions may represent an alternative advertisement encoded in aformat that matches the encoding parameters of other content within thecontent stream, such that inclusion of the fallback content portions inthe content stream is not disruptive to playback of the content stream.For example, where a main content within a content stream is formattedaccording to “high definition” parameters, the manifest generationservice 114 may determine that the selected advertisement is notavailable in content portions formatted according to the “highdefinition” parameters, but that an alternative advertisement isavailable in portions formatted according to the “high definition”parameters. Thus, the manifest generation service may select portionscorresponding to the alternative advertisement as the fallback contentportions.

Thereafter, at (6), the manifest generation service 114 generates amanifest for the content stream, identifying the fallback contentportions as well as portions corresponding to the requested maincontent. Generally described, generation of the manifest may includeidentification of what content is to be streamed to the client computingdevice (e.g., main content and any additional content), the relativeorder of that content (e.g., as determined by the information providedby the advertisement system 130A or other information maintained at themanifest generation service 114), and a set of content portions that,when played in sequence, form the desired content stream. For example,where the manifest generation service 114 determines that a three minuteadvertisement should be streamed before then streaming a thirty minutetelevision program, the manifest generation service 114 may generate amanifest that identifies content portions forming the three minuteadvertisement, as well as content portions that form the thirty minutetelevision program. Accordingly, with reference to the interactions ofFIG. 3A, generation of a manifest may include creating a manifest fileincluding identifiers of a set of content portions corresponding to amain content, as well as identifiers of the fallback content portions.The manifest may also include metadata regarding the stream, such as aformat of the content portions, length of each portion, overall durationof the stream, etc. In one embodiment, the manifest is formatted inaccordance with the APPLE™ HTTP live streaming protocol, or “HLS.” Inother embodiments, the manifest may be formatted in accordance withother streaming protocols, such as the dynamic adaptive streaming overHTTP (“DASH”) protocol, the ADOBE™ HTTP dynamic stream (HDS) protocol,or the MICROSOFT™ smooth streaming (MSS) protocol. Typically, manifestsgenerated according to these protocols include identifiers for eachcontent portion that correspond to actual files on a network-basedsystem. For example, manifests may indicate a URI for each contentportion that corresponds to a video file (such as a transport stream, or“ts” file) stored on a network-based storage device. Thus, bydownloading and outputting these video files, a client can stream thecontent identified in the manifest.

In some instances, direct placement of actual identifiers within amanifest can provide an opportunity for client computing devices 102 toselectively modify the manifest to remove unwanted portions, or blockdownloading or output of specific content portions. Thus, the manifestgeneration service 114 may, at (4), generate a “concealed” manifest,which identifies content portions by concealed identifiers that preventor inhibit client computing devices 102 from distinguishing betweendifferent types of content, as described within the '423 application(incorporated by reference above).

The interactions of FIG. 3A are continued on FIG. 3B, where the manifestgeneration service 114 transmits the manifest for the content stream tothe client computing device 102, at (7). As will be described below(e.g., with respect to FIGS. 4A and 4B), the client computing device 102may thereafter process the manifest in order to retrieve contentportions forming the content stream, and output the content stream to aclient.

As discussed above, it may be generally desirable that each contentportion identified within a manifest represent content that is encodedaccording to matching parameters (e.g., bitrate, frame rate, resolution,etc.). In the interactions of FIG. 3A, it is assumed that contentportions corresponding to an advertisement selected for inclusion in acontent stream are not available in a format encoded according toparameters matching other portions of the content stream. While themanifest generation service 114 may operate to select fallback contentportions for inclusion in the stream in such instances, the manifestgeneration service 114 may be configured to attempt to limit furtheroccurrences, by directing the content service 120 to encode the selectedadvertisement according to matching parameters in response to therequest for the content stream. In this manner, content portionsrepresenting the selected advertisement, as encoding according to thematching parameters, may be made available at the content service 120for inclusion in other content streams, such as requests fromalternative client computing devices 102 for the same main content orother main content formatted according to the same parameters as themain content represented within the content stream discussed withrespect to FIG. 3A.

Accordingly, at (8), the manifest generation service 114 transmits arequest to the content service 120 to generate content portionsrepresenting the advertisement previously selected for inclusion withinthe content stream, encoded according to parameters matching those ofother content portions within the content stream.

At (9), the content service 120 retrieves the additional content fromthe advertisement system 130A. Illustratively, the additional contentmay be provided by the advertisement system 130A in a format thatenables the content service 120 to re-encode or transcode the additionalcontent according to a variety of different parameters, to match theencoding parameters of a given content stream. For example, theadditional content may be provided in a “raw” or uncompressed format, orin an compressed format that is high enough quality to allow forre-encoding with parameters selected to match other content portionswithin a content stream (e.g., as a “mezzanine” file). In oneembodiment, a location of the additional content may be identified bythe advertisement system 130A (e.g., within the VAST response), toenable the content server 120 to retrieve the additional content.

Thereafter, at (10), the content service 120 generates content portionsrepresenting the selected advertisement, encoded according to parametersmatching other content portions included within the content stream. Forexample, where the content stream includes a set of content portionsencoded according to a given set of parameters (e.g., a specificbitrate, frame rate, or resolution, a pre-defined profile associatedwith specific encoding parameters, etc.), the content service 120 canprocess the additional content, as received from the advertisementsystem 130, in order to generate the content portions called for in themanifest file. Illustratively, the content management engine mayinteract with a pool of content encoders, such as described in the '347application incorporated by reference above, to instruct the pool ofcontent encoders to encode the additional content with appropriateparameters. Thereafter, at (11), the content service 120 can store theencoded, matching content portions within the content data store 124 forlater retrieval by the POPs 112 or client computing devices 102. Thus,via the interactions of FIG. 3A and 3B, where an advertisement or otheradditional content is selected for inclusion within a content stream,but is not yet available in an encoding with parameters matching otherportions of the content stream, a fallback content portion can beincluded in the content stream to enable playback of the content stream.Further, the additional content may be re-encoded, in response to therequest for the content stream, into a set of content portions withparameters matching the content stream. Thereafter, the re-encodedadditional content, as represented by the set of content portions, maybe included within manifest files for subsequent requests of the contentstream.

While the interactions of FIGS. 3A and 3B are described abovesequentially, it is contemplated that some or all of the interactionsmay repeatedly occur, and that these interactions may occur at least inpart concurrently. For example, the manifest generation service 114 mayconcurrently or simultaneously transmit a manifest to a POP 112 andrequest that content portions within the manifest be created. As afurther example, the streaming content delivery system 110 may beconfigured to deliver multiple manifests for a given item of streamingcontent, or to deliver a single manifest as multiple transmissions overtime. Thus, prior to each point in which a new manifest or section of amanifest is transmitted to the client computing device 102, the manifestgeneration service 114 may determine a new set of content portions to beidentified within the new manifest or section. In some instances, thenew set of portions may vary based on monitored information regardingthe streaming content (e.g., as obtained from the monitoring service118). For example, where monitoring information indicates that a clientcomputing device 102 did not output a portion (or, potentially, that theportion was never requested by the client computing device 102), themanifest generation service 114 may identify the portion (or anotheradditional content portion) in a new manifest or manifest section. Thus,where a user “skips” over a portion (e.g., an advertisement) in aneffort not to view the portion, a new advertisement or protected portionmay be identified in the manifest. In some instances, new manifests mayidentify only additional content (e.g., and not other content, such asmain content) until a client computing device 102 outputs the content,at which point additional manifests (or manifest sections) can beprovided including other content.

Moreover, while the interactions of FIGS. 3A and 3B are described withrespect to a single series of content portions, embodiments of thepresent disclosure may enable the use of alternative series of contentportions, each of which form a different version of streaming content.For example, a first series of content portions may present streamingcontent at a first quality level, a second series at a second qualitylevel, etc. The various series may be identified in a single manifest ormultiple manifests provided to the client computing device 102. In someinstances, the client computing device 102 may switch between outputtingcontent portions of different series to account for the state of thedevice 102 (e.g., to account for slow communications between the device102 and the streaming content delivery system 110). Accordingly, thecontent service 120 may in some instances act to re-encode an additionalcontent according to a variety of different parameters, to satisfy thecontent portions identified within the manifest file.

While the interactions described above illustrate the identification offallback content portions in a manifest file in instances where aselected advertisement is not available in a format matching otherportions within a content stream, alternative implementations arepossible and contemplated herein. For example, the manifest generationservice 114 may in some instances identify matching content portions forinclusion within a manifest, regardless of whether such matching contentportions are actually available at the streaming content delivery system110 at the time of manifest generation. For example, the manifestgeneration service 114 may include, within the manifest, informationidentifying, for a given content portion, a content to be includedwithin the portion (e.g., a section of an advertisement), as well asdesired encoding parameters for the content, without first verifyingthat the appropriately encoded content is available at the contentservice 120. In some instances, the identifying information may includea file identifier or uniform reference identifier including the desiredcontent and encoding parameters (e.g.,http://scds.tld/ad1_segment1_hd.ts”). Thereafter, the manifestgeneration service 114 may transmit a request to the content service 120to generate any content portions identified within the manifest but notyet available at the streaming content delivery system 110 (e.g., withinthe content data store 124). In one embodiment, the manifest generationservice 114 may transmit the complete manifest to the content service120, and the content management engine 122 may identify any contentportions referenced within the manifest but not yet available from thecontent data store 124. In another embodiment, the manifest generationservice 114 may identify any content portions referenced within themanifest but not yet available from the content data store 124.Illustratively, identification of content portions referenced within themanifest but not yet available from the content data store 124 mayinclude determining whether a specific portion of an underlying content(e.g., a specific advertisement, warning, disclaimer, etc.) referencedin the manifest is available within the content data store 124 in aversion that is encoded with parameters matching other content portionsreferenced within the manifest. In one embodiment, identification ofcontent portions referenced within the manifest but not yet availablefrom the content data store 124 may include comparing file identifiers(e.g., URIs) referenced within the manifest file and correspondingidentifiers included within the content data store 124. Thereafter, thecontent service 120 may begin to encode the content portions identifiedin the manifest file, such that if encoding completes prior to a requestfor the content portions, the newly encoded content portions can betransmitted to a client computing device 102. In the instance thatencoding does not complete prior to a request for a content portion, afallback content portion can be transmitted to the requesting clientcomputing device 102.

Illustrative interactions for enabling a client device 102 to viewstreaming content based on a manifest file including content portionsthat may not yet be available at the content service 102 will bedescribed with reference to FIG. 4A. Specifically, FIG. 4A depicts a setof illustrative interactions for providing a fallback content portion inresponse to a determination that a requested content portion is notavailable at the content service 120, while FIG. 4B depicts a set ofillustrative interactions for providing a requested content portion,such as in instances where a request-driven encoding of the requestedcontent portion has completed.

The interactions of FIG. 4A begin at (1), where a client computingdevice 102 requests a content portion from a POP 112 of the streamingcontent delivery system 110, using an identifier for the portionincluded within a manifest. For the purposes of description of FIG. 4A,it will be assumed that the requested content portion corresponds to anadditional content (e.g., a disclaimer or advertisement), which has beenencoded to match encoding parameters of other content portions (e.g.,main content) within a manifest. As noted above, manifest files may begenerated by referencing content portions regardless of whether thecontent portion is actually available at the streaming content deliveryservice 110. Accordingly, the interactions of FIGS. 4A and 4B do notassume that the requested matching content portion actually exists atthe streaming content delivery service 110.

In one embodiment, the request identifies the requested content portionby use of a file name of a content portion expected to be available atthe streaming content delivery system 110 (e.g., as generated accordingto request-driven encoding). In another embodiment, the requestidentifies the requested content portion by use of a concealedidentifier generated in accordance with embodiments of the '423application, incorporated by reference above, which corresponds to anactual identifier of a content portion expected to be available at thestreaming content delivery system 110. The request may be automaticallygenerated by the client computing device 102 (e.g., by a web browser orother application) based on processing the manifest previously obtainedfrom the streaming content delivery system 110. On receiving therequest, the POP 112, at (2) determines the requested portion based onthe identifier. Illustratively, where concealed identifiers are notused, the POP 112 may directly identify a requested content portion fromthe identifier provided by a client computing device 102 (e.g., anactual identifier of the requested portion). Where concealed identifiersare used that are generated by encrypting an actual identifier with anencryption key, the POP 112 may utilize that key to decrypt theconcealed identifier, and thus determine an actual identifier of therequested portion. Where concealed identifiers are used that aregenerated using other conversions (e.g., random assignment), the POP 112may utilize information provided by the manifest generation system 114,such as a mapping of concealed identifiers to actual identifiers, todetermine which actual identifier corresponds to the requested portion.

As noted above, a POP 112 may function to cache at least some contentportions requested by client computing devices 102, such that second orsubsequent requests for a content portion by the same or a differentclient computing device 102 can be serviced by providing a copy of thecontent portion included within the cache. Thus, if the POP 112 hasrecently received a request for the matching content portion, the POP112 may return the matching content portion directly to the clientcomputing device 102. However, if no client computing device 102 hasrecently requested the matching content portion (as may be the case ifthe matching content portion has been generated on-the-fly to matchparameters of other portions identified within a manifest file), the POP112 can determine, at (3), that the matching content portion is notcached. As such, the POP 112, at (4), requests the matching contentportion from the content service 120.

At (5), the content service 120 (e.g., via the content management engine122) determines whether the requested, matching content portion isavailable within the content data store 124. Illustratively, assume thatthe requested, matching content portion is the same matching contentportion that is discussed above with respect to interaction (10) of FIG.3B. Further, assume that the content service 120 obtains the request forthe matching content portion before generation of that matching contentportion has completed, which may occur, for example, due tocomputational time required to generate the matching content portion.Under such circumstances, one option may be for the content service 120to return and error to the POP 112, such as a “file not found” error,which in turn may transmit the error to the client computing device 102.As would be appreciated by one skilled in the art, such an option wouldlikely be undesirable. Accordingly, rather than returning an error ininstances where a requested matching content portion is unavailable, thecontent service 120 may instead identify a fallback content portion, at(6). As discussed above with respect to FIGS. 3A and 3B, a fallbackcontent portion may in some instances include the same underlyingcontent as the requested content portion, but encoded according todifferent parameters. For example, the fallback content portion mayinclude the same audio, video, or textual content encoded at a lowerresolution, bitrate, or frame rate. In other instances, a fallbackcontent portion may represent a different underlying content from therequested content portion, such as a different advertisement, formattedaccording to the same parameters as a matching content portion. Whileuse of a fallback portion may be undesirable when compared to use of thematching content portion, use of fallback portions can enableimplementation of request-driven encoding in many instances while stillproviding acceptable delivery of a content stream in instances whererequest-driven encoding cannot be completed in a timely manner.Moreover, use of a fallback portion may be relatively rare for commonlyaccessed content streams, as subsequent requests for a matching contentportion are likely to occur after such a matching content portion hasbeen generated by the content service 120. In some instances, contentproviders (e.g., providers of main content or additional content) mayspecify criteria by which the content service 120 may select fallbackcontent. For example, and advertisement system 130 may include within aVAST response criteria for selecting a fallback content when a primaryselected content is not available. Such criteria may include, by way ofnon-limiting example, encoding parameters of the fallback content,subject matter of the fallback content, tags associated with thefallback content, or providers of the fallback content.

Where a fallback content portion represents the same underlying contentas a requested content portion, but encoded according to differentparameters, such fallback content portions may be formatted such thatstorage of fallback content portions for every potential content portionis possible, either at the streaming content delivery system 110 or atan external service. For example, fallback content portions may beencoded at a relatively low bitrate or resolution, such that storage ofeach fallback content portion requires relatively little storage spacein the content data store 124. As a further example, fallback contentportions may be hosted outside the streaming content delivery system110, such as at a system of a provider of the content underlying thefallback content portion (e.g., the additional content), thus requiringno storage space of the content data store 124.

Accordingly, at (7), the content service 120 may return the fallbackcontent portion to the POP 112. Where the fallback content portion 112is stored within the content data store, the content service 120 mayreturn the fallback content portion directly. Where the fallback contentportion 112 is stored within an external data store, such as a datastore of a provider of the content underlying the fallback contentportion (e.g., a data store of the advertising system 130), the contentservice 120 may return to the POP 112 a reference to a location of thefallback content portion, such that the POP 112 may then retrieve thefallback content portion from the location.

In some embodiments, the response provided by the content service 120may be formed to inhibit improper caching of the fallback contentportion at the POP 112. Recall, for example, that the fallback contentportion is returned to the POP 112 in response to a request for amatching content portion. As such, the configuration of the POP 112 maycause the POP 112 to cache the fallback content portion as the matchingcontent portion. This may lead the POP 112 to service subsequentrequests for the matching content portion with the fallback contentportion, regardless of whether the actual matching content portion isthen available at the content service 120. To address this issue, thecontent service 120 may in one embodiment establish a small or zerotime-to-live, or “TTL,” value for the fallback content portion,indicating to the POP 112 that the fallback content portion should beconsidered immediately or substantially immediately (e.g., withinmilliseconds or seconds) invalid. Thus, assuming that the POP 112appropriately recognizes the TTL value, the fallback content portion canbe expected to not be cached at the POP 112, and further requests forthe matching content portion may result in a repetition of theinteractions of FIGS. 4A or 4B.

In some embodiments, the issue of potential caching at the POPs 112 mayfurther be addressed by the content service 120 by utilization ofredirections. For example, rather than returning a fallback contentportion directly in response to a request for a matching contentportion, the content service 120 may return a redirection to a URI ofthe fallback content portion. The use of redirection may beadvantageous, for example, to allow for caching of the fallback contentportion at the POP 112. For example, where a POP 112 retrieves aredirection to a URI associated with a fallback content portion, the POP112 may fulfill the request by a locally cached version of the fallbackcontent portion associated with the URI. Illustratively, the redirectionmay be associated with a low or zero TTL value, such that the POP 112 isunlikely to consider the redirection valid for subsequent requests toaccess the matching content portion.

At (9), the POP 112 may return the retrieved fallback content portion tothe client computing device 102, in order to fulfill the request for thematching content portion. The client computing device 102 can then, at(10), output the fallback content portion as part of the content stream,thus viewing the content encoded within the fallback content portion.

With reference to FIG. 4B, a set of interactions is depicted that mayoccur alternatively to those of FIG. 4A. Specifically, while theinteractions of FIG. 4A occur where a requested, matching contentportion is not available at the content service 120 (e.g., because thematching content portion is still being generated by the content service120), the interactions of FIG. 4B depict an instance in which therequested matching content portion is available at the content service120. For example, the interactions of FIG. 4B may occur where arequested matching content portion occurs near the end of a series ofcontent portions identified within a manifest file, such that an amountof time that occurs between transmission of the manifest file to theclient computing device and requesting of the matching content portionby the client computing device is sufficient to enable the contentservice 120 to generate the matching content portion. As such,interactions (1) through (4) of FIG. 4B are substantially similar to thecorresponding interactions of FIG. 4A, and will be not re-described.However, unlike the interactions of FIG. 4B, at (5), the content service120 determines that the requested, matching content portion is availableat the content service 120 (e.g., after having been generated inresponse to generation of the manifest file referencing the matchingcontent portion). Thus, at (6), the matching content portion is returnedto the POP 112. Illustratively, the matching content portion may beformatted or associated with metadata encouraging the POP 112 to cachethe matching content portion, such that subsequent requests for thematching content portion (e.g., by the same or a different clientcomputing device 102) may be serviced by the POP 112 from a cached copy.For example, the content service 120 may, in returning the matchingcontent portion, associate the matching content portion with arelatively long (e.g., on the order of minutes or hours) TTL value.

Thereafter, the matching content portion can be returned from the POP112 to the client computing device 102, at (7). The client computingdevice 102 can then output the matching content portion at (8). Thus,the client computing device 102 is enabled to output a content streamformed by a set of content portions encoded according to matchingparameters, without requiring the streaming content delivery service 102to maintain a pre-generated set of matching content portions. Rather, atleast some content portions (e.g., corresponding to additional contentincluded in a content stream to accompany main content) may bedynamically encoded in response to a request for the content stream. Ininstances where such dynamic encoding is completed prior to a requestfor the corresponding content portions, those content portions may bereturned to a client computing device. Moreover, those content portionsmay be cached, either at POPs 112 or at a content server 120, such thatsubsequent requests for content streams including the content portionsmay be fulfilled based on previously generated content portions.However, where dynamically encoded content portions are not available ata time requested by a client computing device 102, the client computingdevice 102 may nevertheless output the content stream utilizing fallbackcontent portions.

While the interactions of FIGS. 4A and 4B are described with referenceto a request from a client computing device 102 for a specific contentportion corresponding to an identifier included within a manifest file,some embodiments of the present disclosure may utilize identifiers notdirectly corresponding to any given content portion. For example, whereadditional content is to be included in a content stream, the manifestgeneration service 114 may be configured to include a “placeholder”identifier for such additional content within a manifest file, withoutnecessarily determining which additional content is to be included.Illustratively, the placeholder identifier may reference a URI of thecontent service 120 not associated with an individual content portion(e.g., “http://contentservice.tld/placeholder.ts”). On receiving arequest for a portion corresponding to a placeholder identifier, thecontent server 120 may dynamically determine the content portion toreturn in response to the request. Illustratively, the content portionmay be determined based on what content portions are available at thecontent server 120 with parameters matching other portions of a streambeing output by a requesting device. In some instances, the contentportion may be determined based on interactions with an advertisementsystem 130, such as via the VAST specification.

With reference to FIG. 5, one illustrative routine 500 for providingstreaming content including portions created via request-driven encodingwill be described. The routine 500 may be carried out, for example, bythe content delivery system 110 of FIG. 1 (e.g., utilizing the contentservice 120). The routine 500 begins at block 502, where the contentdelivery system 110 obtains a request for streaming content from aclient computing device 102. The request may be generated by a client'suse of the client computing device 102, such as by launching orinteracting with an application for viewing streaming content, a webbrowser application, etc. The request can indicate at least a maincontent desired by the client, such as a television program, movie,video, audio program, etc. In some instances, the request can furtherindicate information regarding the client computing device 102 or aclient utilizing the client computing device 102, such as configurationof the device 102, location of the device 102, an account of the device102 or the client on the streaming content delivery system 110.

At block 504, the streaming content delivery system 110 selectsadditional content to be included in a content stream as a set ofmatching content portions, with encoding parameters matching those ofother content portions within the stream (e.g., those portionsrepresenting a main content). In some instances, the streaming contentdelivery system 110 may determine additional content by interaction withthird party external systems, such as advertisement systems 130.Further, the streaming content delivery system 110 may determine theadditional content based on information regarding the client computingdevice 102, such as by delivering information regarding the clientcomputing device 102 to the advertisement system 130 for use in anadvertisement selection algorithm.

At block 505, the streaming content delivery system 110 generates amanifest file for the content stream, referencing a series of contentportions that collectively represent the content stream. This series ofcontent portions may include a first set of content portionscorresponding to a main content, and a second set of content portionscorresponding to additional content. The first set of content portionsmay be stored at the streaming content delivery service 110 andrepresent a main content encoded according to a first set of parameters(e.g., bitrate, frame rate, resolution, etc.). The second set of contentportions may represent additional content encoded according to amatching set of parameters (e.g., the same or a similar bitrate, framerate, resolution, etc.), such that output of the second set of contentportions is unlikely to result in technical difficulties on a clientcomputing device or a disruptive consumption experience for a client.For the purposes of FIG. 5, this second set of content portions will bereferred to as “matching content portions.” However, despite beingreferenced within the manifest file, these matching content portions maynot yet exist on the streaming content delivery service 110, aspre-generation of every possible matching content portion may becomputationally prohibitive.

Thus, at block 508, the streaming content delivery service 110 can begingeneration of the matching content portions. Illustratively, thestreaming content delivery service 110 may obtain a copy of theadditional content corresponding to the matching content portions, whichis suitable for re-encoding with parameters matching other portions ofthe content stream. This copy may include an uncompressed or highresolution copy, such as a “raw” file, a “master” copy, or a “mezzanine”file, and may be stored at the streaming content delivery service 110 orretrieved from another system, such as a system of a provider of theadditional content. Thereafter, the streaming content delivery service110 may re-encode the copy into a set of portions formatted forinclusion in the content stream. These portions may be determined, forexample, based on information included within the manifest file, such asthe number and duration of the portions and the encoding parameters tobe used to encode the portions. In some instances, the streaming contentdelivery service 110 may work with other services, such as the contentstreaming system of the '347 application incorporated by referenceabove, to encode the matching content portions.

Additionally, at block 510 (which may occur prior to or simultaneouslywith implementation of block 508, and thus prior to generation of thematching contents being completed), the manifest file is transmitted toa client computing device associated with the request for the contentstream.

At block 512, a request is received for a matching content portion, asreferenced within the manifest file. Illustratively, the request may bereceived from a POP, based on a request transmitted to the POP by aclient computing device. The request from the client computing device,in turn, may be based on processing the manifest file via a playbackapplication, such as a web browser, video player, audio player, etc. Inother embodiments, the request may be received directly from a clientcomputing device.

At block 514, the streaming content delivery service 110 determineswhether the requested matching content portion is available at thestreaming content delivery service 110. Where generation of the matchingcontent portion (e.g., as begun at block 508) has completed, block 518may evaluate as true, and the routine 500 can proceed to block 520,where the streaming content delivery service 110 returns the requestedmatching content portion to the requesting device (e.g., a POP or aclient computing device). In some instances, the streaming contentdelivery service 110 may modify the requested matching content portion,or associate the requested matching content portion with metadata, tofacilitate caching of the matching content portion. For example, thestreaming content delivery service 110 may establish a relatively long(e.g., on the order of minutes or hours) TTL value for the matchingcontent portion, such that a POP is likely to cache the matching contentportion, and such that subsequent requests for the matching contentportion may be fulfilled by the POP based on cached data. Thereafter,the routine 500 may end at block 526.

In the instance that the requested matching content portion is notavailable at the streaming content delivery service 110, such as wheregeneration of the matching content portion has not yet completed, block518 may evaluate as false. The routine 500 thus proceeds to block 522,where a fallback content portion is identified. The fallback contentportion can represent the same underlying content as a requested contentportion (e.g., the same underlying audio, video, or text), encodedaccording to different parameters. For example, the fallback contentportion can represent a low quality or low resolution copy of thematching content portion that was requested. In one embodiment, thestreaming content delivery service 110 may maintain a set of fallbackcontent portions for each additional content that might be included in acontent stream. Because these fallback content portions can be utilizedin many different content streams (e.g., regardless of the encodingparameters of the content stream), and in some instances may berelatively low quality, storage of pre-generated fallback contentportions at the streaming content delivery service 110 may not becomputationally prohibitive. In other embodiments, fallback contentportions may be stored at an external system, such as a system of aprovider of the underlying content. Thus, the streaming content deliveryservice 110 may identify the fallback content portions on such anexternal system.

At block 524, the streaming content delivery service 110 returns to arequesting device (e.g., a POP or client computing device) the fallbackcontent portion. In some instances, the streaming content deliveryservice 110 may return the fallback content portion directly. In otherinstances, the streaming content delivery service 110 may return areference to the fallback content portion (e.g., a HTTP 3xx redirect),to enable the requesting device to retrieve the fallback contentportion. In either instance, the returned information may be modified bythe streaming content delivery service 110 to inhibit caching or futurereliance on the information. For example, the streaming content deliveryservice 110 may associate the returned information (e.g., the fallbackcontent portion or a reference to the fallback content portion) with azero or low TTL value, such that subsequent requests for the matchingcontent portion would be expected to again be transmitted to thestreaming content delivery service 110 (rather than being fulfilledbased on a cached version of the information returned at block 524).Thereafter, the routine 500 may end at block 526.

While the routine 600 is described sequentially, implementation ofvarious blocks of the routine 600 may occur at least in partconcurrently, and may be achieved by different components within thestreaming content delivery system 110. For example, the streamingcontent delivery system 110 may utilize a manifest generation service toimplement some portion of the routine 600 (e.g., blocks 502, 504, 506,and 510) and a content service to implement other blocks of the routine600 (e.g., blocks 508, and 512-524). Functionalities of the routine 600may further be implemented, in part or in whole, on POPs (e.g., within acontent delivery network). Moreover, while the routine 600 isillustratively described with respect to a single series of contentportions forming a given content stream, some embodiments may providemultiple series of content portions, each of which forms a version ofthe content stream, and which may be combined as required during outputon a client computing device. For example, each series of contentportions may form a different version of the content stream of adifferent quality level (e.g., varying bitrate or resolution), and theclient computing device may select between different series according tocomputational resources of the client computing device (e.g., networkbandwidth, processing power, memory, etc.). In such instances, eachseries may be identified in a manifest file, and include contentportions that may not yet be available at the streaming content deliveryservice 110. For example, a manifest file may reference standarddefinition, high definition, and ultra-high definition versions of acontent portion, regardless of whether these version are available atthe streaming content delivery service 110. The streaming contentdelivery service 110, in turn, may begin to create such versions ongeneration of the manifest file, such that they can be provided to aclient computing device after generation. In the instance that arequested version is not yet available, the streaming content deliveryservice 110 may provide a default, fallback version that ispre-generated at the streaming content delivery service 110.

All of the methods and processes described above may be embodied in, andfully automated via, software code modules executed by one or morecomputers or processors. The code modules may be stored in any type ofnon-transitory computer-readable medium or other computer storagedevice. Some or all of the methods may alternatively be embodied inspecialized computer hardware.

Conditional language such as, among others, “can,” “could,” “might” or“may,” unless specifically stated otherwise, are otherwise understoodwithin the context as used in general to present that certainembodiments include, while other embodiments do not include, certainfeatures, elements and/or steps. Thus, such conditional language is notgenerally intended to imply that features, elements and/or steps are inany way required for one or more embodiments or that one or moreembodiments necessarily include logic for deciding, with or without userinput or prompting, whether these features, elements and/or steps areincluded or are to be performed in any particular embodiment.

Disjunctive language such as the phrase “at least one of X, Y or Z,”unless specifically stated otherwise, is otherwise understood with thecontext as used in general to present that an item, term, etc., may beeither X, Y or Z, or any combination thereof (e.g., X, Y and/or Z).Thus, such disjunctive language is not generally intended to, and shouldnot, imply that certain embodiments require at least one of X, at leastone of Y or at least one of Z to each be present.

Unless otherwise explicitly stated, articles such as ‘a’ or ‘an’ shouldgenerally be interpreted to include one or more described items.Accordingly, phrases such as “a device configured to” are intended toinclude one or more recited devices. Such one or more recited devicescan also be collectively configured to carry out the stated recitations.For example, “a processor configured to carry out recitations A, B andC” can include a first processor configured to carry out recitation Aworking in conjunction with a second processor configured to carry outrecitations B and C.

Any routine descriptions, elements or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode which include one or more executable instructions for implementingspecific logical functions or elements in the routine. Alternateimplementations are included within the scope of the embodimentsdescribed herein in which elements or functions may be deleted, orexecuted out of order from that shown or discussed, includingsubstantially synchronously or in reverse order, depending on thefunctionality involved as would be understood by those skilled in theart.

It should be emphasized that many variations and modifications may bemade to the above-described embodiments, the elements of which are to beunderstood as being among other acceptable examples. All suchmodifications and variations are intended to be included herein withinthe scope of this disclosure and protected by the following claims.

What is claimed is:
 1. A system for providing streaming content, thesystem comprising: a data store including a first set of contentportions corresponding to a main content, wherein the first set ofcontent portions are encoded according to one or more first parameters;and one or more computing devices configured with computer-executableinstructions that, when executed, cause the computing devices to: obtaina request from a client computing device to provide a content streamincluding the main content; determine that an additional content is tobe included in the content stream; determine that the data store doesnot include a second set of content portions representing the additionalcontent encoded according to the one or more first parameters; select afallback content for inclusion within the content stream, wherein thedata store further includes a third set of content portions representingthe fallback content encoded according to the one or more firstparameters; generate a manifest for the content stream, wherein themanifest includes identifiers for respective content portions within thefirst set of content portions and identifiers for respective contentportions within the third set of content portions; transmit the manifestto the client computing device; and begin encoding the additionalcontent according to the one or more first parameters to result insecond set of content portions representing the additional contentencoded according to the first set of parameters.
 2. The system of claim1, wherein the main content is at least one of audio, video, or textualcontent.
 3. The system of claim 1, wherein the additional content is atleast one of a disclaimer, a warning, credits, a dedication, or anadvertisement.
 4. The system of claim 1, wherein the one or morecomputing devices are further configured with the computer-executableinstructions to: obtain a second request to provide second a contentstream including the main content; and in response to the secondrequest: determine that the additional content is to be included in thesecond content stream; determine that the data store includes the secondset of content portions representing the additional content encodedaccording to the one or more first parameters; generate a secondmanifest for the second content stream, wherein the second manifestincludes identifiers for respective content portions within the firstset of content portions and identifiers for respective content portionswithin the second set of content portions; and transmit the secondmanifest to the client computing device.
 5. The system of claim 1,wherein the one or more computing devices are further configured withthe computer-executable instructions to: receive a request for a contentportion of the third set of content portions; and transmit the contentportion in response to the request; and wherein the content portion istransmitted to at least one of a client computing device or a point ofpresence (POP) within a content distribution network.
 6. The system ofclaim 1, wherein the one or more computing devices are furtherconfigured with the computer-executable instructions to; transmit arequest to a system associated with the provider of the additionalcontent to select the additional content for representation in thecontent stream; and obtain a response identifying the additional contentrepresentation in the content stream.
 7. A computer-implemented methodimplemented by a streaming content delivery system, thecomputer-implemented method comprising: obtaining a request from aclient computing device to provide a content stream; determining one ormore encoding parameters for the content stream; selecting a content tobe included in the content stream; determining that the content is notavailable in a format encoded according to the one or more encodingparameters; beginning an encoding of the content according to the one ormore encoding parameters; selecting a fallback content for inclusionwithin the content stream; generating a manifest for the content stream,wherein the manifest includes an identifier corresponding to thefallback content; and transmitting the manifest to the client computingdevice.
 8. The computer-implemented method of claim 7 wherein selectingthe content to be included in the content stream comprises: transmittinga request to a system associated with the provider of the content toselect the content for representation in the content stream; andobtaining a response identifying the content for representation in thecontent stream.
 9. The computer-implemented method of claim 8, whereinthe response is formatted according to the video ad serving template(VAST) specification.
 10. The computer-implemented method of claim 7,wherein the one or more encoding parameters include a value for at leastone of a bitrate, audio normalization values, frame rate, or resolutionof content portions to be output as part of the content stream.
 11. Thecomputer-implemented method of claim 7, wherein the manifest furtherincludes an identifier corresponding to a main content to be output aspart of the content stream.
 12. The computer-implemented method of claim7 further comprising: receiving a second request for the content stream;determining that the content is available in the format encodedaccording to the one or more encoding parameters; generating a secondmanifest for the content stream, wherein the second manifest includes anidentifier corresponding to the content as encoded according to the oneor more encoding parameters; and transmitting the manifest to the clientcomputing device.
 13. The computer-implemented method of claim 7,wherein the fallback content corresponds to at least one of analternative to the content or a representation of the content encodedaccording to one or more alternative encoding parameters. 14.Non-transitory computer-readable media including computer-executableinstructions that, when implemented by a streaming content deliverysystem, cause the streaming content delivery system to: obtain a requestfrom a client computing device to provide a content stream; generate amanifest file for the content stream, wherein the manifest file includesidentifiers for content portions to be output as part of the contentstream, and wherein at least one content portion to be output as part ofthe content stream is not yet available at the streaming contentdelivery system; transmit the manifest file to the client computingdevice; begin encoding a content file to result in the at least onecontent portion identified within the manifest file; receive a requestfor the at least one content portion; determine that the at least onecontent portion identified within the manifest file is not available fortransmission to the client computing device; select a fallback contentportion; and transmit the fallback content portion or informationidentifying the fallback content portion.
 15. The non-transitorycomputer-readable media of claim 14, wherein the content stream isformatted according to at least one of hypertext transport protocol(HTTP) live streaming protocol (HLS), dynamic adaptive streaming overHTTP (DASH), MICROSOFT smooth streaming (MSS) protocol, or HTTP dynamicstream (HDS) protocol.
 16. The non-transitory computer-readable media ofclaim 14, wherein the computer-executable instructions further cause thestreaming content delivery system to select one or more parameters forthe at least one content portion, and wherein the computer-executableinstructions cause the streaming content delivery system to beginencoding the content file according to the one or more parameters. 17.The non-transitory computer-readable media of claim 14, wherein the oneor more parameters for the at least one content portion are selectedbased at least in part on one or more parameters of other contentportions to be output as part of the content stream.
 18. Thenon-transitory computer-readable media of claim 14, wherein thecomputer-executable instructions further cause the streaming contentdelivery system to select a fallback content portion corresponding to adefault representation of contents within the content file.
 19. Thenon-transitory computer-readable media of claim 14, wherein theinformation identifying the fallback content portion is a redirection toa location of the fallback content portion.
 20. The non-transitorycomputer-readable media of claim 19, wherein the redirection isassociated with a TTL value selected to discourage caching of theredirection.